How To Create A Great License

Developing Applications Using The SoftwareShield System> Creating Licensing Solutions > Creating A License Project > How To Create A Great License

## How To Create A Great License

Great licenses are easy to create when you understand a few basic principles.

The most important principle is careful Planning Of License Features. Planning a license is important because it is virtually impossible to change the behavior of the license after its been deployed without re-deploying it; just like it is virtually impossible to change the behavior of your programs without recompiling and re-deploying them.

Once you have a firm grasp on what features you will need in your license and it is planned out thoroughly, you should focus on Creating Alias Files, and Creating Authorization Definitions. If you have planned your license well, creating great Alias Files and Authorization Definitions is straightforward.

Sometimes, you will find it easiest to simply use an Existing License As A Template when you start a new license project. This is especially true when you are simply revising a license for an existing product of yours to deploy with the latest version / release or a different license agreement, (demo vs. trial etc.).

Once you have finished creating your license, it is simply a matter of compiling and then Recording The Programming Information (using the programming notes files).

Make sure that you name your main license file in such a way that it is relatively easy for you to tell which product and version the license is for. This will help you when the time comes that you have a customer who might have different versions of the same product with different licenses. If your customer accidentally fouls the installation procedure or mixes up the licenses you can quickly tell if they have the correct license in the right directory or not.

We recommend that different licenses for the same product use differently identified Alias Files and Virgin Data. Simply giving hidden and steganographic files different names and registry Alias Files different GUIDs can avoid problems.

These kinds of problems can easily be overcome if you need to by using a Recover License Authorization Definition, but - only if you included a recovery definition in the license in the first place. We recommend that all your licenses contain a Recover License Authorization Definition - just in case.

Because of the tamper-resistance technology built in to the ClientProtector component, you may have problems debugging your program that uses a license if you have any of the Resist-Tampering flags turned on. Once you are ready to release your license and you have decided to turn on this feature, just reopen the project and recompile it. The newly created license will detect debuggers and reverse engineering tools. To test this, simply try to debug your program using your IDE. Once you call the StartUp method of the ClientProtector, the program should simply shut down. However, running normally - it will execute fine. Note that the default setting for these switches is OFF. Not also that resist-debuggers is available only on an NT kernel system ie: NT4, 2000 or XP. Other tamper-resistance features like SoftICE detection operates on all systems - regardless of OS.

When you are choosing passwords, try and pick passwords which are completely unintelligible. In fact, the more they appear like compiled code the better. You can choose or create your own or use our automatic password generator. Since constant strings in your compiled code are often directly readable by a hacker with a simple a hex editor, we recommend that for maximum security you split up the constants in your program and put them together right before you need the strings to initialize the ClientProtector. See the Anti-Hacker Guide for a specific example of how to assemble strings for use just before you need them.